package  
{
	import net.flashpunk.Entity;
	import net.flashpunk.graphics.Image;
	import net.flashpunk.utils.Input;
	import net.flashpunk.utils.Key;
	import net.flashpunk.FP;
	/**
	 * ...
	 * @author Dyego
	 */
	public class Jogador extends Entity
	{
		[Embed(source = 'assets/enemy_idle.png')] private const JOGADOR_IMAGEM:Class;
		private var forca:Number=0.2;
		private var forcaDoPulo:Number=10;
		private var hFriction:Number=0.95;
		private var vFriction:Number=0.99;
		private var velocidadeX:Number=0;
		private var velocidadeY:Number=0;
		private var estaNoChao:Boolean=false;
		private var gravidade:Number=0.3;
		
		/*public var vida:int;
		public var pulou:Boolean = false;
		public var cima:Boolean = true;
		public var baixo:Boolean = true;
		public var noAr:Boolean = false;
		public var VelocidadeDoPulo:Number = 0.21875;
		public var yInicial:int;
		public var X:Number = 200, Y:Number = 200;
		public var estaAndando:Boolean = false;*/

		public function Jogador()
		{
			graphic = new Image(JOGADOR_IMAGEM);
			type = "jogador";
			x = 100;
			y = 400;
			setHitbox(34,70);
		}

		override public function update():void 
		{
			var pressionado:Boolean=false;
			
			//verifica se o personagem passou do limite de locomoção
			if (y < 250) { baixo = true; cima = false; }
			else if (y > 490) { cima = true; baixo = false; }
			else { cima = true; baixo = true; }
				
			if (Input.check(Key.LEFT)) {
				velocidadeX-=forca;
				pressionado=true;
			}
			if (Input.check(Key.RIGHT)) {
				velocidadeX+=forca;
				pressionado=true;
			}
			if (collide("cenario",x,y+1)) {
				estaNoChao=true;
				velocidadeY=0;
				if (Input.check(Key.UP)) {
					velocidadeY-=forcaDoPulo;
				}
			} else {
				velocidadeY+=gravidade;
			}
			if (Math.abs(velocidadeX)<1 && !pressionado) {
				velocidadeX=0;
			}
			
			velocidadeX*=hFriction;
			velocidadeY*=vFriction;
			ajustarPosicaoX();
			ajustarPosicaoY();
			
			//verificação de teclas para movimento do jogador
			/************************************************/
			/*if (Input.check(Key.UP) && cima && !noAr)
			{
				y -= 3;
				Mundo.jogador.y = this.y
				SideKick1.seguirCima = true;
				
			} else SideKick1.seguirCima = false;
			
			if (Input.check(Key.DOWN) && baixo && !noAr)
			{
				y += 3;
				Mundo.jogador.y = this.y
				SideKick1.seguirBaixo = true;
				
			} else SideKick1.seguirBaixo = false;
			
			if (Input.check(Key.LEFT))
			{
				x -= 3;
				Mundo.jogador.x = this.x
				SideKick1.seguirEsquerda = true;
				Mundo.direcoes = "esquerda";
				
			} else SideKick1.seguirEsquerda = false;
			
			if (Input.check(Key.RIGHT))
			{
				x += 3;
				Mundo.jogador.x = this.x
				SideKick1.seguirDireita = true;
				Mundo.direcoes = "direita";
				
			} else SideKick1.seguirDireita = false;
			
			//verificao para fazer o pulo do jogador
			if (Input.pressed(Key.SPACE) && !pulou)
			{
				noAr = true;
				yInicial = y; // atualiza o y da volta do pulo
				VelocidadeDoPulo = -14; // distancia a ser pulada
				pulou = true; // pula está ativo
			}
			
			//Tclas para executar o tiro
			if (Input.pressed(Key.A) && !noAr)
			{
				FP.world.create(TiroPersonagem);
			}
			
			//manda sidekick parar
			if (Input.pressed(Key.Z))
			{
				if(!SideKick1.madouParar)
					SideKick1.madouParar = true;
				else
					SideKick1.madouParar = false;
			}
			
			//chamada da função que faz jogador pular
			this.pular();*/
			
			//verifica colisao do inimigo com jogador
			this.inimigoColisao();
		}
	
		//função do pulo
		public function pular():void
		{
			if (pulou)
			{
				y += VelocidadeDoPulo;
				VelocidadeDoPulo += 1;
				
				if (y >= yInicial)
				{
                    y = yInicial;
					pulou = false;
					noAr = false;
				}
			}
		}
		
		public function destroiJogador():void
		{
			FP.world.remove(this);
		}
		
		public function inimigoColisao():void 
		{
			var b:Inimigo = collide("inimigo", x, y) as Inimigo;
			
			if (b)
			{
				//FP.world.create(Inimigo).y = this.y;
				Mundo.jogadorEstaMorto();
				this.destroiJogador();
			}
		}
		
		private function ajustarPosicaoX():void 
		{
			//criado por www.emanueleferonato.com
			for (var i:int = 0; i < Math.abs(velocidadeX); i++) 
			{
				if (! collide("cenario", x + FP.sign(velocidadeX), y)) 
				{
					x+=FP.sign(velocidadeX);
				} 
				else 
				{
					velocidadeX=0;
					break;
				}
			}
		}
		private function ajustarPosicaoY():void 
		{
			//criado por www.emanueleferonato.com
			for (var i:int = 0; i < Math.abs(velocidadeY); i++) 
			{
				if (! collide("cenario", x, y + FP.sign(velocidadeY))) 
				{
					y+=FP.sign(velocidadeY);
				} 
				else 
				{
					velocidadeY=0;
					break;
				}
			}
		}
	}

}